//#include <iostream>
//#include <string>
//#include <algorithm>
//using namespace std;
//
//int length,al,tmpn=0,q=-1;
//
//long long int arr[100000]={2,3,5,7},tmp;
//
//
//int addPP(int n){
//	if ((length%2==0&&tmpn>=length/2)) {
//        int w=2*(tmpn-(length/2)+1)-1;
//        tmp=tmp*10+(tmp%10^(w)/(10^(w-1)));
//        cout << (tmp%10^(w)/(10^(w-1))) << endl;
//    } else if (length%2==1&&tmpn>=((length/2)+1)) {
//        int w=2*(tmpn-(length/2)-1+1);
//        tmp=tmp*10+(tmp%10^(w)/(10^(w-1)));
//        cout << (tmp%10^(w)/(10^(w-1))) << endl;
//    }
//	else {
//        tmp=tmp*10+n;
//    }
//	tmpn++;
//	if(tmpn<length) addPP(q);
//	else {
//		arr[al] = tmp;al++;tmp=0;tmpn=0;
//	}
//}
//
//
//int main(){
//	int a,b;
//	cin >> a >> b;
//	string r = to_string(b);
//	int lg = r.length();
//	for(int i=1;i<=lg;i++){
//        length=i;
//		for(int i=1;i<=9;i++){
//            if(length>=3){
//                for(q=0;q<=9;q++){
//                    addPP(i);
//                }
//            }else{
//                q=i;
//			    addPP(i);
//            }
//		}
//	}
//	for(int y=0;y<al;y++){
//		cout << arr[y] << endl;
//	}
//}



//#include <iostream>
//#include <string>
//#include <algorithm>
//#include <cmath>
//using namespace std;
//long long int arr[100000000];
//int _pointer=0,_arr=0,
//	_i,_i_a,
//	in_length;
//int initialization(int base,int length){
//	int l=length;
//	if(l%2==0) l--;
//	l=(l-1)/2;
//	for(int i=0;i<(pow(10,l));i++){
//		arr[_i_a]=base*(pow(10,(length-1))) + base;
//		_i_a++;
//	}
//	if(length < in_length)
//	initialization(base,length+1);
//}
//int creatPP(int base,int length){
//	int l=length;
//	if(l%2==0) l--;
//	l=(l-1)/2;
//	for(int i=0;i<(10^l);i++){
//		arr[_arr+i+_pointer] *= 10;
//		arr[_arr+i+_pointer] += i;
//	}
//}
//int main(){
//	int v;
//	cin >> v;
//	in_length = to_string(v).length();
//	initialization(1,1);
//	for(int i=0;i<_i_a;i++){
//		cout <<  arr[i] << endl;
//	}
//}

#include <iostream>
#include <string>
using namespace std;
bool rs(int num) {
	string s = to_string(num);
	int length = s.length();
	for (int i = 0; i < length; i++) {
		if (s[i] != s[length - 1 - i]) return false;
	}
	return true;
}
bool isPrimePalindromes(int num) {
	if (num < 2) return false;
	if ((num >1000 && num < 10000) || (num >100000 && num < 1000000) || (num >10000000 && num < 100000000)) return false;
	for (int i = 2; i < num; i++) {
		if (num % i == 0) {
			return false;
		}
	}
	if (!rs(num)) return false;
	return true;
}
int main() {
	int a, b;
	cin >> a >> b;
	if (a <= 2) cout << 2 << endl;
	a += (a % 2) ? 0 : 1;
	for (int i = a; i <= b; i += 2) {
		if (isPrimePalindromes(i)) cout << i << endl;
	}
}
